<?php
class Model_jenis_lokasi extends CI_Model {

	/*
	 * 1. var $table digunakan untuk menginisialisasi nama table dari model yang bersangkutan
	 * 2. variable ini ditaruh di global agar bisa di akses oleh semua function
	 * 3. Hal ini juga dimaksudkan apabila terjadi perubahan nama table, tinggal mengganti 1 saja
	 */
	var $table = "jenis_lokasi";
	
    function Model_User()
    {
        // Call the Model constructor
        parent::__construct();
    }
	
	/*
	 * function get_by($id);
	 * function ini digunakan untuk mengambil singgle row saja.
	 * digunakan untuk mengambil data ketika edit data.
	 */
	function get_by($id){
		$this->load->database();
						
			$sql = "SELECT * FROM {$this->table} WHERE id='$id';";
			$query = $this->db->query($sql);
		
		$this->db->close();
		
		return $query;
	}
	
	/*
	 * function get_all();
	 * function ini digunakan untuk mengambil banyak record.
	 * digunakan ketika ingin melihat data dari table tsb.
	 */
	function get_all($page=0,$limit=20, $q=''){
		$this->load->database();
		$filter='';
		$page = $page*$limit;
		if($q != ''){
			$filter = " WHERE (";
			$fields = $this->db->list_fields("{$this->table}");
			foreach ($fields as $field){
			   $filter .= " $field LIKE '%$q%' OR" ;
			}
			$filter = rtrim($filter,'OR').")";
		}
		
		//mengambil data dengan ada limitnya
		$sql = "SELECT {$this->table}.* FROM {$this->table}  $filter ORDER BY id ASC LIMIT $page,$limit;";
		$query['data'] = $this->db->query($sql);
		
		//mengambil count dari semua data. Digunakan untuk pengaturan pagingnya
		$sql = "SELECT {$this->table}.* FROM {$this->table} $filter";
		$query['count'] = $this->db->query($sql);
		$this->db->close();
		
		return $query;
	}
    
	/*
	 * function add();
	 * digunakan untuk menambahkan data
	 * parameter $data adalah array dimana key dari array tsb adalah nama field 
	   dan value dari arrat tsb adalah record yang akan diinsertakan
	 */
	function add($data){
		$this->load->database();		
		$this->db->trans_start();
			$this->db->insert("{$this->table}",$data);
		$this->db->trans_complete();
		
		$return = $this->db->trans_status();
		
		$this->db->close();
		return $return;
	}
	
	/*
	 * function edit();
	 * digunakan untuk mengedit data
	 * parameter $data adalah array dimana key dari array tsb adalah nama field 
	   dan value dari arrat tsb adalah record yang akan diinsertakan
	 * parameter $id adalah id dari data yang akan diedit
	 */
	 
	function edit($id,$data){
		$this->load->database();
			$this->db->where('id',$id);
			$this->db->update("{$this->table}",$data);
		$this->db->close();
	}
	
	/*
	 * function delete();
	 * digunakan untuk menghapus data
	 * parameter $id adalah id dari data tersebut
	 */
	function delete($id){
		$this->load->database();
		
		$this->db->trans_start();
			$this->db->query("DELETE FROM {$this->table} WHERE id='$id'");
		$this->db->trans_complete();
		
		$return = $this->db->trans_status();
		
		$this->db->close();
		return $return;
	}
}
?>